package cn.edu.lcu.cs.javateaching.collection;

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/**
 * <p>适合作为迭代器模式的示例</p>
 * <p>选择合适的Map集合保存5位学员的学号和姓名，然后按学号倒序将这些键值对一一打印出来</p>
 * <ol>
 * <li>创建TreeMap集合</li>
 * <li>使用put()方法将学号（1，2，3，4，5）和姓名（Lucy， John, Smith, Amiee, Amanda）存储到Map中</li>
 * <li>使用map.keySet()获取键的Set集合</li>
 * <li>使用Set集合的iterator()方法获取Iterator对象用于迭代键</li>
 * <li>使用Map集合的get()方法获取键所对应的值</li>
 * </ol>
 * 
 * @author Ling
 *
 */
public class TreeMapDemo {
	public static void main(String[] args) {
		Map<String, String> map = new TreeMap<String, String>((k1, k2) -> k2.compareTo(k1)); // 依据指定的比较器，对key进行比较排序
//		TreeMap<String, String> map = new TreeMap<String, String>(); // 按照key的自然顺序递增排序
		map.put("1", "Lucy");
		map.put("5", "Amanda");
		map.put("2", "Lucy");
		map.put("3", "John");
		map.put("4", "Smith");
		
		// 用foreach()与Lambda表达式实现遍历
		map.forEach((k, v) -> System.out.println(k + "\t" + v));
		
		System.out.println("--------------------------");
//		得到当前映射的反序映射
//		map.descendingMap().forEach((k, v) -> System.out.println(k + "\t" + v));
		
		// 用迭代器实现遍历
//		Iterator<String> iterator = map.keySet().iterator();
//		while (iterator.hasNext()) {
//			String key = (String) iterator.next();
//			System.out.println(key + "\t" + map.get(key));
//		}
		
		// 用foreach语句实现遍历
//		for (String key : map.keySet()) {
//			System.out.println(key + "\t" + map.get(key));
//		}
	}

}
